package com.niiwoo.activity.stage.enums.investRank;

import java.util.ArrayList;
import java.util.List;

import lombok.AllArgsConstructor;
import lombok.Getter;

@Getter
@AllArgsConstructor
public enum ActivityLimitUserEnum {
	
//	INVEST_RANK_NEW_ALL(2, "2017年投资排行榜活动，不参与名单(不进入排名也不发奖励)", "InvestRankNew", 0, 2,1),
//	 INVEST_RANK_NEW_TOP20(3, "2017年投资排行榜活动，进入top20排行榜,不发top20的奖励名单", "", 0, 3,4),
//	INVEST_RANK_NEW_FULL(4, "2017年投资排行榜活动，进入满额奖励榜单，不发满额奖励", "", 0, 4,2);//;
	
	INVEST_RANK_TOP20_PARTAKE(2, "2017年投资排行榜活动，top20不参与名单(不进入排名也不发奖励)", "InvestRankNew", 0, 2,1),
	INVEST_RANK_TOP20_AWARD(3, "2017年投资排行榜活动，top20不发奖励名单", "", 0, 3,2),
	INVEST_RANK_FULL_PARTAKE(4, "2017年投资排行榜活动，进入满额奖励榜单，不参与名单", "InvestRankNew", 0, 4,4),//;
	INVEST_RANK_FULL_AWARD(5, "2017年投资排行榜活动，进入满额奖励榜单，不发满额奖励", "", 0,5,8);
	
	 private Integer code;
     private String name;
     private String activityCode;
     private Integer userType;
     private Integer group;//分组(同一个组内的用户类型互斥，不能重复；比如用户A的类型为100即绿色通道1，那么A不能是绿色通道到2 ~ 绿色通道10之内的任一一种)
     private Integer limit;
     

     public static ActivityLimitUserEnum getByCode(Integer code) {
         if (code == null) {
             return null;
         }
         for (ActivityLimitUserEnum r : ActivityLimitUserEnum.values()) {
             if (r.getCode().equals(code)) {
                 return r;
             }
         }
         return null;
     }
     
     public static String getUserTypeName(Integer code) {
         if (code == null) {
             return null;
         }
         ActivityLimitUserEnum res = null;
         for (ActivityLimitUserEnum r : ActivityLimitUserEnum.values()) {
             if (r.getCode().equals(code)) {
                 res = r;
                 break;
             }
         }
         if (res == null) {
             return null;
         }
         if (res.userType == 0) {
             return "限制人名单";
         } else if (res.userType == 1) {
             return "绿色通道用户名单";
         }
         return null;
     }
     
     /**
      * 获取和指定typeCode的Type在同一个组内的Type
      *
      * @param typeCode
      * @return
      */
     public static List<Integer> getTypeValueListInSameGroup(Integer typeCode) {
    	 ActivityLimitUserEnum type = getByCode(typeCode);
         if (type == null) {
             return null;
         }
         List<Integer> codeList = new ArrayList<Integer>();
         for (ActivityLimitUserEnum r : ActivityLimitUserEnum.values()) {
             if (r.getGroup().equals(type.getGroup())) {
                 codeList.add(r.getCode());
             }
         }
         return codeList.size() == 0 ? null : codeList;
     }
}
